#ifndef ESTADOBUTTON_H
#define ESTADOBUTTON_H

#include <QPushButton>
#include <QList>
#include <QString>
#include <QIcon>
#include <QVariant>
#include <QPair>
#include <QDebug>

class EstadoButton : public QPushButton
{
    Q_OBJECT
    Q_PROPERTY(int estado READ getEstado WRITE setEstado)
    Q_PROPERTY(QList<QIcon*> iconos READ getIconos WRITE setIconos)
    Q_PROPERTY(QList<QString> textos READ getTextos WRITE setTextos)
    Q_PROPERTY(QList<QString> styles READ getStyles WRITE setStyles)

public:
    explicit EstadoButton(QWidget *parent = 0);


    int getEstado() const
    {
        return this->_estadoActual;
    }

    QList<QIcon*> getIconos() const
    {
        return this->_iconos;
    }

    QList<QString> getTextos() const
    {
        return this->_textos;
    }

    QList<QString> getStyles() const
    {
        return this->_styles;
    }

signals:

    void nuevoEstado(int i);

public slots:

    void setEstado(int i);

    void setIconos(QList<QIcon*> iconos);

    void setTextos(QList<QString> textos);

    void setStyles(QList<QString> styles);

protected:

    void enterEvent(QEvent *);
    void leaveEvent(QEvent *);

private:

    QList<QIcon*> _iconos;  ///< Lista de iconos de estado
    QList<QString> _textos; ///< Lista de textos de estado
    QList<QString> _styles; ///< Lista de estilos de estado

    int _estadoActual;  ///< Estado actual del boton

    QIcon impresora;

private slots:

    /*!
      Cambia el estado segun las pulsaciones del raton
      */

    void siguienteEstado();
};

#endif // ESTADOBUTTON_H
